package io;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

/**
 * JAVA IO java的输入与输出
 * java使用输入输出的两个方向来规定读写操作
 * 其中输入是从外界到我们写的程序的方向是获取的过程,是[读取]操作
 * 而输出则是发送到外界的方向,是[写入]操作
 *
 * java将IO比喻为"流",我们可以理解为是连接我们写的程序与外界设备之间的"管理",类似现实
 * 生活中的"水管",只不过这个管子里流的不是水,而是[字节]
 *
 * java.io.InputStream和OutputStream是所有字节输入流和输出流的超类,他们是抽象类.
 * InputStream定义了读取字节的相关方法,OutputStream定义了写出字节的相关方法
 * 实际开发中我们可以创建不同种类的输入输出流来连接对应的设备进行读写操作
 *
 * 文件流
 * java.io.FileInputStream和FileOutputStream.它们继承自InputScream和
 * OutputScream都是实际用于读写操作的流
 */
public class FOSDemo {
    public static void main(String[] args) throws IOException {
        //向文件fos.dat中写入一个字节
        /*
        文件输出流常用构造方法
       FileOutputStream(String path)
       FileOutputStream(File file)
         */
        FileOutputStream fos=new FileOutputStream("./fos.bat");
        /*
        void write(int d)
        写出一个字节,写出的内容是给定的int值对于二进制的"低8位"

        fos.write(1)
        int型整数1的二进制
                                      ^^^^^^^^
        00000000  00000000  00000000  00000001
        fos.dat文件的内容
        00000001

         */
        fos.write(1);
        /*

        fos.write(2)
        int型整数2的二进制
        fos.dat文件的内容
        00000001 00000010

         */
        fos.write(2);
        System.out.println("写入完毕");
        fos.close();//写操作最终完毕后要关闭流
    }
}
